package com.fr.report.script.function;

import com.fr.report.script.Function;
import com.fr.report.script.Function.Type;
import com.fr.report.script.NormalFunction;
import com.fr.report.script.Primitive;
import com.fr.report.script.core.parser.OperationUtils;
import com.fr.util.Utils;

public class PROMOTION extends NormalFunction
{
  public Object run(Object[] paramArrayOfObject)
  {
    if (paramArrayOfObject.length < 2)
      return Primitive.ERROR_NAME;
    double d1 = Utils.objectToNumber(paramArrayOfObject[0], false).doubleValue();
    double d2 = Utils.objectToNumber(paramArrayOfObject[1], false).doubleValue();
    if (d1 > 0.0D)
      return new Double((d2 - d1) / d1);
    if (d1 < 0.0D)
      return new Double(-(d2 - d1) / d1);
    return OperationUtils.POSITIVE_INFINITY;
  }

  public Function.Type getType()
  {
    return Function.MATH;
  }

  public String getCN()
  {
    return "PROMOTION(value1,value2):返回value2在value1上提升的比例。\n示例：\nPROMOTION(12, 14)等于0.166666666，即提升了16.6666666%.\nPROMOTION(-12, 14)等于2.166666666，即提升了216.6666666%.";
  }

  public String getEN()
  {
    return "";
  }
}